package com.um.jdy.platform.alarm.manager;


import com.um.jdy.common.alarm.entity.dto.AlarmCodeDTO;
import com.um.jdy.common.alarm.entity.po.AlarmCode;
import com.um.jdy.common.alarm.entity.vo.AlarmCodeVO;
import com.um.jdy.common.alarm.service.AlarmCodeService;
import com.um.jdy.platform.alarm.entity.dto.AlarmCodeListDTO;
import com.um.jdy.platform.alarm.entity.dto.AlarmCodePageDTO;
import com.um.springboot.starter.exception.ServiceException;
import com.um.springboot.starter.orm.entity.Response;
import com.um.springboot.starter.orm.manager.BasePlusManager;
import com.um.springboot.starter.utils.UMBeanUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * 管理类：告警代码表
 */
@Component
public class AlarmCodeManager extends BasePlusManager<AlarmCodeService, AlarmCode, AlarmCodeDTO, AlarmCodeVO, AlarmCodePageDTO, AlarmCodeListDTO> {

    public Response<AlarmCode> addEntity(AlarmCodeDTO dto) {
        AlarmCode entity = UMBeanUtils.copyBean(dto, this.entityClass);
        if(null != service.getEntity("code", entity.getCode())){
            throw new ServiceException(com.um.jdy.common.alarm.code.AlarmCode.CodeExist);
        }
        return Response.success(this.service.addEntity(entity));
    }

    public Response<AlarmCode> updateEntity(String id, AlarmCodeDTO dto) {
        AlarmCode entity = this.service.getEntity(id);
        BeanUtils.copyProperties(dto, entity);
        List<AlarmCode> codeList = service.getList("code", entity.getCode());
        if(codeList.stream().anyMatch(item -> item.getCode().equals(entity.getCode()) && !id.equals(item.getAlarmCodeId()))){
            throw new ServiceException(com.um.jdy.common.alarm.code.AlarmCode.CodeExist);
        }
        return Response.success(this.service.updateEntity(entity));
    }
}
